#!/usr/bin/env bash
#-------------------------------------------------------
#	FileName	: new.sh
#	Author		：hpy
#	Date		：2021年01月01日
#	Description	：新建文件脚本
#-------------------------------------------------------

main(){
	test $# -eq 0 && echo "没有输出有效的文件名" && exit 2 
	DetFileType $*
}

#-----------------------------------
#识别文件名称并自动调用模板脚本生成
#模板
#-----------------------------------
function DetFileType(){
	for i in $*
	do
		test -f $i && echo "已经存在$i文件" && continue 
		case $i in 
			*.sh)   	MakeBashFile $i ;;  
			*.fish) 	MakeFishFile $i ;;  
			*.v) 	    MakeVerilogFile $i ;;
			*.cpp)		MakeCppFile $i ;; 
		        *.awk)          MakeAwkFile $i ;;	
			"*") echo "没有识别文件";;
		esac 
	done 
}

#-----------------------------------
#新建bash的模板文件
#@param1 文件名称
#-----------------------------------
function MakeBashFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/env bash" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}
#-----------------------------------
#新建awk的模板文件
#@param1 文件名称
#-----------------------------------
function MakeAwkFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/awk -f" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建Fish的模板文件
#@param1 文件名称
#-----------------------------------
function MakeFishFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/env fish" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}
#-----------------------------------
#新建 verilog 的模板文件
#@param1 文件名称
#-----------------------------------
function MakeVerilogFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹

	echo "\`timescale 1ns / 1ps"> $1
	echo "// ********************************************************************" >> $1
	echo "//      FileName        : $(basename $1)" >> $1
	echo "//      Author          ：hpy" >> $1
	echo "//      Email           ：yuan_hp@qq.com" >> $1
	echo "//      Date            ：$(date +%Y年%m月%d日)" >> $1
	echo "//      Description     ：" >> $1
	echo "// --------------------------------------------------------------------" >> $1
	echo "module t(" >> $1
	echo "        input clk," >> $1
	echo "        input rst_n" >> $1
	echo ");" >> $1
	echo " " >> $1 
	echo "always@(posedge clk or negedge rst_n)">> $1
	echo "begin">> $1
	echo "        if(!rst_n)begin">> $1
	echo "">> $1
	echo "        end">> $1
	echo "        else begin">> $1
	echo "">> $1
	echo "        end">> $1
	echo "end">> $1

	echo "endmodule">> $1

	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}



#-----------------------------------
#新建 Cpp 的模板文件
#@param1 文件名称
#-----------------------------------
function MakeCppFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹

	echo "/**"> $1
	echo " *   Copyright (C) $(date +%Y) All rights reserved."  >> $1
	echo " *"  >> $1
	echo " *   FileName      ：$(basename $1)"  >> $1
	echo " *   Author        ：hpy"  >> $1
	echo " *   Email         ：yuan_hp@qq.com"  >> $1
	echo " *   Date          ：$(date +%Y年%m月%d日)"  >> $1
	echo " *   Description   ："  >> $1
	echo " */"  >> $1
	echo "">> $1
	echo "#include <bits/stdc++.h>">> $1
	echo "using namespace std;">> $1
	echo "">> $1
	echo "int main(int argc, char* argv[])">> $1
	echo "{">> $1
	echo "	return 0;">> $1
	echo "}">> $1
	echo "">> $1

	echo "新建 $1 成功"
	echo ""
}

main $*
